《高性能網(wǎng)站建設指南》閱讀筆記_規則13- 配置ETag
發(fā)布時(shí)間:2013-11-22 瀏覽:446打印字號:大中小
ETag:實(shí)體標簽,是web服務(wù)器和瀏覽器用于確認緩存組件的有效性的一種機制。是唯一標識了一個(gè)組件的一個(gè)特定版本的字符串.IIS上的ETag格式是Filetimestamp:ChangeNumber即;時(shí)間戳和跟蹤IIS配置變化的計數器組成的字符串。
工作機制:
前面提到過(guò),檢測組件是否有效時(shí),是通過(guò)Web服務(wù)器與客戶(hù)端緩存的組件進(jìn)行匹配的。有兩種方式:
--比較最新修改日期
原始服務(wù)器通過(guò)的Last-Modified響應頭來(lái)返回組建的最新修改日期,瀏覽器通過(guò)If-Modefied-since進(jìn)行比較判斷,如果匹配則返回304(not Modefied),避免了200請求
-- 比較ETag實(shí)體標簽
服務(wù)器傳遞客戶(hù)端組件一個(gè)ETag,如:
服務(wù)器發(fā)送ETag:"10c24bc-4ab-457e1c1f"
此后,如果瀏覽器驗證該組件,則會(huì )使用If-None-Match頭將ETag傳回原始服務(wù)器,如:
瀏覽器發(fā)送If-None-Match:"10c24bc-4ab-457e1c1f"
如果相同,則服務(wù)器返回304 Not Modified
如果不相同,則服務(wù)器重新向瀏覽器發(fā)送該組件。
如果一個(gè)網(wǎng)站有多臺服務(wù)器,那么,對于完全相同的組件,從一臺服務(wù)器到另一臺服務(wù)器,IIS產(chǎn)生的ETag是不會(huì )匹配的。就是說(shuō)如果有10臺服務(wù)器,用戶(hù)得到正確304響應的幾率只有10%,其余的90%都會(huì )得到200響應并下載所有的數據,
需要注意的是:ETag的服務(wù)器返回(If-None-Match)比最新修改日期的返回(If-Modified-Since)具有更高的優(yōu)先級。如果同時(shí)存在,則會(huì )禁止返回304 Not Modified。
建議:
ETag只用在單個(gè)服務(wù)器的網(wǎng)站上,在多服務(wù)器的網(wǎng)站上,可以修改ETag格式(如:IIS中實(shí)現從ETag中移除ChangeNumber,只留時(shí)間戳),但這樣和Last-Modified頭是等效的。所以最好將ETag完全移除,已避免組件的重復下載。
如何在IIS中移除ETag,參考:
http://support.microsoft.com/?id=922733
http://support.microsoft.com/?id=922703


